數值線性代數是現代計算的核心動力,彌合了符號數學之美與原始硬體效能之間的差距。雖然理論上的代數將平移 $T(v) = v + v_0$ 視為簡單的加法,但計算機卻將其視為對優化矩陣乘法流水線的干擾。為了達到最高速度,我們轉變視角:擴展空間的維度,將「位移」轉化為「結構化的乘法」。
1. 從加法到乘法
在理論框架中,線性變換與平移(仿射映射)通常被分開處理。然而,高性能的函數庫如 BLAS(基本線性代數子程序) 專門針對矩陣-向量和矩陣-矩陣乘積進行優化。為了利用這些核心運算,我們將所有操作表示為:
$$T(v) = Av$$
2. 齊次坐標
要使用矩陣實現 $\mathbf{R}^n$ 中的位移,我們需擴展至 $\mathbf{R}^{n+1}$。一個向量 $[x, y, z]^T$ 變為 $[x, y, z, 1]^T$。這個「額外的 1」使得平移可以編碼於 $(n+1) \times (n+1)$ 矩陣的最後一列中。
增廣結構
由 $v_0 = [t_x, t_y, t_z]^T$ 所定義的平移可表示為:
$$A = \begin{bmatrix} 1 & 0 & 0 & t_x \\ 0 & 1 & 0 & t_y \\ 0 & 0 & 1 & t_z \\ 0 & 0 & 0 & 1 \end{bmatrix}$$
計算保真
最後一行的數字 $0, 0, 0, 1$ 擔負著關鍵角色。當 $A$ 與一個末尾分量為 $1$ 的向量相乘時,結果的末尾分量為:
$(0 \cdot x) + (0 \cdot y) + (0 \cdot z) + (1 \cdot 1) = 1$
這確保了資料的「仿射」性質得以保留,允許連續運算而不損失坐標系統的完整性。
3. 實現標準:BLAS
數值效率依賴於標準化的子程序。 BLAS 提供三個層級的操作:
- 第 1 層級: 向量-向量運算(例如點積)。
- 第 2 層級: 矩陣-向量運算 ($Ax+b$)。
- 第 3 層級: 矩陣-矩陣運算 ($AB+C$),這是最密集且硬體效率最高的運算。
🎯 核心原則
數值線性代數利用齊次坐標,將多樣化的幾何運算統一為矩陣-向量乘法 ($T(v) = Av$)。這使得硬體能使用優化的 BLAS 常式,以結構完整性每秒處理百萬次運算。